﻿using System.Collections.Generic;
using System.ServiceModel;
using VMukti.Business.CommonDataContracts;
using VMukti.Business.WCFServices.BootStrapServices.DataContracts;

namespace VMukti.Business.WCFServices.SuperNodeServices.BasicHttp
{
    [ServiceContract]
    public interface IHttpSuperNodeService
    {
        [OperationContract(IsOneWay = true)]
        void svcJoin(string uName, string bindingType);

        [OperationContract(IsOneWay = false)]
        List<string> GetBuddies(string uName);

        [OperationContract(IsOneWay = true)]
        void AddBuddies(string username, string buddyname, string buddystatus);

        [OperationContract(IsOneWay = true)]
        void AddNodeBuddies(string username, List<string> NodeBuddies);


        [OperationContract(IsOneWay = true)]
		void RemoveBuddies(string username, string buddyname);

        [OperationContract(IsOneWay = true)]
        void svcUnjoin(string uName);

        [OperationContract(IsOneWay = false)]
        List<string> GetBuddyStatus(List<string> BuddyList);

        [OperationContract(IsOneWay = false)]
        bool IsSuperNodeAvailable();

        [OperationContract(IsOneWay = false)]
        List<clsMessage> svcGetSpecialMsgs(string uName);

        [OperationContract(IsOneWay = true)]
        void svcSetSpecialMsgs(string from, string to, string msg, clsModuleInfo objModInfo);

        [OperationContract(IsOneWay = true, Name = "svcSetPageSpecialMsg")]
        void svcSetSpecialMsgs(string from, string to, string msg, clsPageInfo objPageInfo);
        //void svcSetSpecialMsgs(string from, string to, string msg, List<clsModuleInfo> lstModInfo);

        [OperationContract(IsOneWay = true)]
        void svcAddDraggedBuddy(string from, string to, string msg, clsModuleInfo objModInfo);

        [OperationContract(IsOneWay = true,Name="svcAddPageDraggedBuddy")]
        void svcAddDraggedBuddy(string from, string to, string msg, List<clsModuleInfo> lstModInfo);


        [OperationContract(IsOneWay = true)]
        void svcSetRemoveDraggedBuddy(string from, List<string> to, string msg, clsModuleInfo objModInfo);


        [OperationContract(IsOneWay = false)]
        string[] svcStartAService(VMuktiAPI.PeerType PeerType, string ModuleName);

        [OperationContract(IsOneWay = false)]
        string[] IsAuthorizedUser(clsBootStrapInfo objBootStrapInfo, string strUserName, string strPassword);

        [OperationContract(IsOneWay = false)]
        string IsAuthorized(string strUserName);

        [OperationContract(IsOneWay = false)]
        string svcAddSIPUser();

        [OperationContract(IsOneWay = true)]
        void svcRemoveSIPUser(string strSIPNumber);

        [OperationContract(IsOneWay = false)]
        string svcGetConferenceNumber();

        [OperationContract(IsOneWay = true)]
        void svcGetNodeNameByIP(string NodeName,string NodeIP);
    }

    public interface IHTTPSuperNodeServiceChannel : IClientChannel, IHttpSuperNodeService
    {
    }



}
